import {
  AlignmentType,
  Document,
  TabStopType,
  TabStopPosition,
  Paragraph,
  TextRun,
  Tab,
  Header,
  Footer,
  ImageRun,
  TableCell,
  TableRow,
  Table,
  TableLayoutType,
  VerticalAlign,
  InternalHyperlink,
  Bookmark,
  ExternalHyperlink,
  PageReference,
  HorizontalPositionRelativeFrom,
  HorizontalPositionAlign,
  VerticalPositionRelativeFrom,
  VerticalPositionAlign,
  UnderlineType,
  WidthType,
  PageNumber
} from "docx";
const docx = require('docx');




export class MicrosoftConfig {
  create ({ head, bottom, mainTitle, subtitle, tableCell }) {
    const doc = new Document({
      sections: [
        {
          // 对文档进行全局设置配置
          properties: {},
          // 设置内容区域
          children: [
            // 测试模板
            this.createTableTemplateFoundation(),
            // 如果写以下代码，则会导致office打不开的问题 - WPS能打开，但不会展示这个错误示范
            new TextRun({ text:'错误示范' }),
            // 如果就是只想写一段文字 -- 那么需要按以下方式写
            new Paragraph({
              children: [new TextRun({ text: '正确示范' }),]
            }),
            // 注意 : new TextRun({ text:'xx' }), 并不是不能写  --  如果此段代码不是最后结束语句，就可以使用，
            // 特别注意：一段文字/表格结束   不能使用 '' / null / undefined / new TextRun({ text:'xx' }) 等  会导致格式不识别问题，以上会导致   下一段的文本不展示
          ],
        },
      ],
    });
    return doc
  }


  // ----示例
  createTableTemplateFoundation () {
    return new Table({ // 创建表格
      columnWidths: [9000], // 每个单元格宽度
      layout: TableLayoutType.FIXED, // 布局方式
      rows: [
        new TableRow({ // 创建表格行
          children: [
            new TableCell({ // 创建单元格
              width: {
                size: 9000, // 单元格宽度
                type: WidthType.DXA // 单元格宽度单位
              },
              verticalAlign: 'center', // 设置字在单元格对齐方式 垂直居中
              margins: { top: 100, bottom: 100 }, // 设置边距 -- 用来撑开单元格
              children: [
                new Paragraph({ // 创建段落
                  children: [
                    new TextRun({ // 创建文本对象
                      text: "测试", // 文本
                      name: '宋体', // 字体 （例如："宋体"）
                      size: 18, // 字号 （例如：14）-- 注意：以size:18为小五为例子 -- 21五号字 -- 具体使用自己调整
                      color: '000000', // 颜色 （例如："000000"）
                      underline: false, // 下划线（例如："single"）
                      bold: false, // 是否加粗（例如：true）
                      italic: false, // 是否斜体（例如：true）
                      strike: false, // 删除线（例如：true）
                      subscript: false, // 下标（例如：true）
                      superscript: false // 上标（例如：true）
                    })
                  ],
                  spacing: { before: 0 }, // 距其他元素距离
                  alignment: 'center', // 对齐方式 
                })
              ]
            })
          ]
        })
      ]
    });
  }
}